/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package View;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

import Model.dao.*;
import Model.pojo.Item;

public class ItemView {
	private static Scanner entrada = new Scanner(System.in);
	private ItemDao itemDao;
	private FornecedorDao fornecedorDao;
	
	
	
	public ItemView (ItemDao itemDao, FornecedorDao fornecedorDao){
		this.itemDao = itemDao;
		this.fornecedorDao = fornecedorDao;
	}
	
	public static Scanner getEntrada() {
		return entrada;
	}

	public static void setEntrada(Scanner entrada) {
		ItemView.entrada = entrada;
	}
	
	public void cadastrarItem() throws IOException {
		//Verificacoes
		Verificacoes verificacoes = new Verificacoes();
		System.out.println("Digite o nome do item: ");
		String nome = entrada.nextLine();
		while (verificacoes.verificarStringVazia(nome)){
			System.out.println("Nome do item nao aceito, digite o nome do item novamente: ");
			nome = entrada.nextLine();
		}
		if (itemDao.verificar(nome) != null){
			System.out.println("Digite o codigo do fornecedor do item: ");
			long codigoFornecedor = Long.parseLong(entrada.nextLine());
			if (fornecedorDao.verificar(codigoFornecedor) == null){
				System.out.println("Fornecedor nao encontrado.");
				System.out.println("Cadastrar um novo fornecedor");
				FornecedorView fornecedorView = new FornecedorView(fornecedorDao);
				codigoFornecedor = fornecedorView.cadastrarFornecedor();
			}
			System.out.println("Digite preco de custo do item: ");
			double precoCusto = Double.parseDouble(entrada.nextLine());
			
			System.out.println("Digite a quantidade a ser aumentada no estoque: ");
			int quantEstoque = Integer.parseInt(entrada.nextLine());
			itemDao.alterarEstoque(itemDao.verificar(nome).getCodigo(), "Adicionar", quantEstoque);
			itemDao.adicionarFornecedor (itemDao.verificar(nome).getCodigo(), codigoFornecedor);
			itemDao.alterarPrecoCusto(itemDao.verificar(nome).getCodigo(), precoCusto, quantEstoque);
		}
		else {
			long codigo = itemDao.gerarCodigo();
			System.out.println("Digite o codigo do fornecedor do item: ");
			long codigoFornecedor = Long.parseLong(entrada.nextLine());
			if (fornecedorDao.verificar(codigoFornecedor) == null){
				System.out.println("Fornecedor nao encontrado.");
				System.out.println("Cadastrar um novo fornecedor");
				FornecedorView fornecedorView = new FornecedorView(fornecedorDao);
				codigoFornecedor = fornecedorView.cadastrarFornecedor();
			}
			
			System.out.println("Digite a margem de lucro do item: ");
			double margemLucro = Double.parseDouble(entrada.nextLine());
			
			System.out.println("Digite preco de custo do item: ");
			double precoCusto = Double.parseDouble(entrada.nextLine());
			
			System.out.println("Digite a quantidade do item em estoque: ");
			int quantEstoque = Integer.parseInt(entrada.nextLine());
			
			itemDao.inserir(nome, codigo, fornecedorDao.verificar(codigoFornecedor), margemLucro, precoCusto, quantEstoque); 
			System.out.println("Item cadastrado com sucesso!");
			return;		
		}
	}
	public void listarItem() {
		Iterator<Item> it;
		ArrayList<Item>listar = itemDao.getLista(); 
		if (listar.isEmpty() == true) return;
		it = listar.iterator();
		while (it.hasNext()) {  
			Item aux = it.next();  
			System.out.println("Item:"+aux.getNome());
			System.out.println("Quantidade: "+aux.getQuantEstoque());
			
		}
		return;
	}
	
}
	

